package com.varian.system.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.varian.system.dto.SysDeptTreeItemDTO;
import com.varian.system.entity.SysDept;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author ben
 * @since 2024/11/19
 */
@Mapper
public interface SysDeptMapper extends BaseMapper<SysDept> {
    Integer incrementLeftValue(@Param("rightValue") Integer rightValue, @Param("value") Integer value);

    Integer incrementRightValue(@Param("rightValue") Integer rightValue, @Param("value") Integer value);

    Integer selectMaxRightValue();

    List<Long> selectIdByRange(@Param("leftValue") Integer leftValue, @Param("rightValue") Integer rightValue);

    Integer decrementLeftValueByRange(@Param("startValue") Integer startValue, @Param("endValue") Integer endValue, @Param("value") Integer value);

    Integer decrementRightValueByRange(@Param("startValue") Integer startValue, @Param("endValue") Integer endValue, @Param("value") Integer value);

    Integer incrementLeftValueByRange(@Param("startValue") Integer startValue, @Param("endValue") Integer endValue, @Param("value") Integer value);

    Integer incrementRightValueByRange(@Param("startValue") Integer startValue, @Param("endValue") Integer endValue, @Param("value") Integer value);

    Integer updateValueAndLevelBy(@Param("ids") List<Long> ids, @Param("value") Integer value, @Param("levelDiff") Integer levelDiff);

    Integer updateValueAndLevelByTree(SysDeptTreeItemDTO list);
}
